<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class M_Consulta extends Modelo {

    public $id = null;
    public $matricula;
    public $fechaActoMedico;
    public $fecha;
    public $motivo;
    public $tipoConsultaId;
    public $causaId;

    function __construct() {
        parent::__construct();
        $this->tabla = 'consultas_informativas';
    }

    function setAttributes($datos = array(), $tipo = 'object') {
        return parent::_setAttributes(__CLASS__, $datos, $tipo);
    }

    function doArray() {
        return parent::_doArray(__CLASS__);
    }

    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function getValidacion() {
        $valid = array(
            array('field' => 'motivo', 'label' => 'Motivo', 'rules' => 'trim|required'),
            array('field' => 'fechaActoMedico', 'label' => 'Fecha del Acto Medico', 'rules' => 'trim|required'),
            array('field' => 'tipoConsultaId', 'label' => 'Tipo de Consulta', 'rules' => 'trim|required'),
            array('field' => 'asesor[]', 'label' => 'Asesores', 'rules' => 'required'),
        );
        return $valid;
    }

    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function valoresPorDefecto() {
        return array(
            'matricula' => '',
            'motivo' => '',
            'tipoConsultaId' => 0,
            'fecha' => gmdate('d/m/Y'),
            'fechaActoMedico' => '',
            'asesor' => '',
            'causaId' => 0,
        );
    }

    /**
     * Devuelve el ultimo estado de una causa
     */
    function getProximasCitas() {
        $this->db->select($this->tabla . '.*, medicos.nombre');
        $this->db->from($this->tabla);
        $this->db->join('medicos', $this->tabla . '.matricula = medicos.matricula', 'left');
        $this->db->where($this->tabla . '.fecha >=curdate()');
        $this->db->order_by($this->tabla . '.fecha', 'DESC');
        $results = $this->db->get();
        return $results->result_object();
    }

    /**
     * 
     */
    function getPagosXFechas($fechaDesde, $fechaHasta) {
        $select = '
            consultas_informativas.id,
            consultas_informativas.matricula,
            consultas_informativas.fecha,
            consultas_informativas.fechaActoMedico,
            consultas_informativas.motivo,
            medicos.matricula,
            medicos.nombre medico,
            tipos_consultas.nombre tipo
            ';
        $this->db->select($select);
        $this->db->from($this->tabla);
        $this->db->join('medicos', 'medicos.matricula = ' . $this->tabla . '.matricula');
        $this->db->join('tipos_consultas', 'tipos_consultas.id = ' . $this->tabla . '.tipoConsultaId');
        $this->db->where('fecha >=', normal_to_database_date($fechaDesde));
        $this->db->where('fecha <=', normal_to_database_date($fechaHasta));

        $results = $this->db->get();

        return $results->result_object();
    }

    /**
     * Devuelve las caratula
     */
    function getListPorCausaId($causaId) {
        $select = '
            consultas_informativas.id,
            consultas_informativas.matricula,
            consultas_informativas.fecha,
            consultas_informativas.fechaActoMedico,
            consultas_informativas.motivo,
            medicos.matricula,
            medicos.nombre medico,
            tipos_consultas.nombre tipo
            ';
        $this->db->select($select);
        $this->db->from($this->tabla);
        $this->db->join('medicos', 'medicos.matricula = ' . $this->tabla . '.matricula');
        $this->db->join('tipos_consultas', 'tipos_consultas.id = ' . $this->tabla . '.tipoConsultaId');
        $this->db->where('causaId', $causaId);

        $results = $this->db->get();

        return $results->result_object();
    }

    /**
     * Devuelve las caratula
     */
    function getListPorMedicos($medicos) {
        $select = '
            consultas_informativas.id,
            consultas_informativas.matricula,
            consultas_informativas.fecha,
            consultas_informativas.fechaActoMedico,
            consultas_informativas.motivo,
            consultas_informativas.causaId,
            medicos.matricula,
            medicos.nombre medico,
            tipos_consultas.nombre tipo
            ';
        $this->db->select($select);
        $this->db->from($this->tabla);
        $this->db->join('medicos', 'medicos.matricula = ' . $this->tabla . '.matricula');
        $this->db->join('tipos_consultas', 'tipos_consultas.id = ' . $this->tabla . '.tipoConsultaId');

        $where = "(";
        $top = count($medicos);
        $i = 1;
        foreach ($medicos as $medico) {
            $where .= "ssap_" . $this->tabla . ".matricula = '" . $medico->matricula . "'";
            if($i < $top) {
                $where .= " OR ";
            }
            $i++;
        }
        $where .= ") AND ssap_" . $this->tabla . ".causaId = 0";

        $this->db->where($where);

        $results = $this->db->get();

        return $results->result_object();
    }

}